{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "name": "AutoTraceIntroduction.ipynb",
      "provenance": [],
      "toc_visible": true
    },
    "kernelspec": {
      "name": "python3",
      "display_name": "Python 3"
    },
    "accelerator": "GPU"
  },
  "cells": [
    {
      "metadata": {
        "id": "tFapH7r7h4EO"
      },
      "cell_type": "markdown",
      "source": [
        "# colab版MMD自動トレースへようこそ！(準備編)"
      ]
    },
    {
      "metadata": {
        "id": "vgDngowWh8bc"
      },
      "cell_type": "markdown",
      "source": [
        "このノートブックでは、以下をお伝えします。\n",
        "\n",
        "- colab (Google Colaboratory)とは\n",
        "- colabの使い方\n",
        "- エラーが起きた場合\n",
        "- 注意事項\n",
        "- 利用規約"
      ]
    },
    {
      "metadata": {
        "id": "Atf--UGaiEAj"
      },
      "cell_type": "markdown",
      "source": [
        "## colab (Google Colaboratory)とは"
      ]
    },
    {
      "metadata": {
        "id": "nt6wtv5siOEj"
      },
      "cell_type": "markdown",
      "source": [
        "\n",
        "> Google Colaboratory(略称：colab (コラボ)) は、完全にクラウドで実行される Jupyter ノートブック環境です。設定不要で、無料でご利用になれます。\n",
        "\n",
        "> Jupyter Notebook (ジュピター・ノートブック) とは、ノートブックと呼ばれる形式で作成したプログラムを実行し、実行結果を記録しながら、データの分析作業を進めるためのツールです。\n",
        "\n",
        "Chrome もしくは Firefoxがあれば、後は全部Googleのクラウド上で、MMD自動トレースを実行することができます。\n",
        "実行結果のVMD等は、ご自分のローカル環境にダウンロードする事ができます。\n",
        "\n",
        "使い方に少しクセがあるので、この導入ノートブックで練習してみてから、MMD自動トレースを始めてください。"
      ]
    },
    {
      "metadata": {
        "id": "-cl6P0V1jDze"
      },
      "cell_type": "markdown",
      "source": [
        "# colabの使い方"
      ]
    },
    {
      "metadata": {
        "id": "v0k-zhnUjYR8"
      },
      "cell_type": "markdown",
      "source": [
        "※ここでは、Jupyter Notebookの操作方法も合わせて「colabの使い方」として扱います。そのため、一部正確な表現ではありません。ご了承下さい。"
      ]
    },
    {
      "metadata": {
        "id": "h-mK3nMeFMcb"
      },
      "cell_type": "markdown",
      "source": [
        "## セル（プログラム）の実行"
      ]
    },
    {
      "metadata": {
        "id": "3SLEmu5ujvZ5"
      },
      "cell_type": "markdown",
      "source": [
        "colabは「セル」と呼ばれる単位ごとに処理を実行することができます。\n",
        "\n",
        "この下に記載している、薄いグレーの欄の`[ ]`の部分にカーソルを合わせてみてください。\n"
      ]
    },
    {
      "metadata": {
        "id": "tfHWt-8dv9nU"
      },
      "cell_type": "code",
      "source": [
        "!echo \"Hello MMD Auto Trace!\""
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "metadata": {
        "id": "JrARkkuKkPpo"
      },
      "cell_type": "markdown",
      "source": [
        "\n",
        "![セル1](https://drive.google.com/uc?export=view&id=1Iq65BhLYQAx8vBBgdfEsLO0VeOVMjJuS)\n",
        "\n",
        "カーソルを合わせると、三角の再生ボタンが表示されたのがお分かりでしょうか。\n",
        "\n",
        "![セル2](https://drive.google.com/uc?export=view&id=1_542_9rRF48Fr9TkLlERrT-1JCLG6VLU)\n",
        "\n",
        "この三角ボタンをクリックすると、セルが実行され、中に記載されているコードが順次処理されます。\n",
        "\n",
        "※ページを開いて、最初の実行時には、ノートブックの実行許可が求められます。\n",
        "\n",
        "\n",
        "![確認ダイアログ](https://drive.google.com/uc?export=view&id=1PTNx_cZ0YY8HVN4i28F8jALK87X_MnWp)\n",
        "\n",
        "ランタイムリセットのチェックが入っている場合、ランタイムのリセットの確認ダイアログが出ます\n",
        "\n",
        "**※リセットを行うと、環境がすべて破棄されます。インストール済（実行編で準備が終わっている）の場合はチェックを外して下さい。**\n",
        "\n",
        "![ランタイムのリセット](https://drive.google.com/uc?export=view&id=11pJrO0-boAmLH0sheH-G1bshA3goETPq)\n",
        "\n",
        "これでノートブックのセル（プログラム）を実行することができるようになりました。\n",
        "\n",
        "\n",
        "![セル3](https://drive.google.com/uc?export=view&id=19c52CCO_fsT7Xp86ArhUjXtcdaojrBvj)\n",
        "\n",
        "三角の周りの点線の円が回っている場合、そのセルは実行中もしくは実行待ちです。\n",
        "\n",
        "![タブ](https://drive.google.com/uc?export=view&id=1tW5V1O4z5Lftq-dLMn-7kB5lWCTrQ88i)\n",
        "\n",
        "実行中の場合、ブラウザタブのアイコンがグレーになります。\n",
        "\n",
        "![セル4](https://drive.google.com/uc?export=view&id=1PEcmTlmw_Y4PWWBVFsv7OHJS9_d9GEIr)\n",
        "\n",
        "実行結果はセルの下に出力されます。\n",
        "たったこれだけで、プログラムが実行されます。"
      ]
    },
    {
      "metadata": {
        "id": "tw2ZrQyoFR-s"
      },
      "cell_type": "markdown",
      "source": [
        "## Googleドライブとの連携（読み込み）"
      ]
    },
    {
      "metadata": {
        "id": "7uOqWO5KFVOv"
      },
      "cell_type": "markdown",
      "source": [
        "MMD自動トレースでは、Googleドライブにアップロードした動画を処理します。\n",
        "\n",
        "ここでは、Googleドライブとの連携を実際に確認してみてください。"
      ]
    },
    {
      "metadata": {
        "id": "Uof2npq1IsQT"
      },
      "cell_type": "markdown",
      "source": [
        "1．Googleドライブに、\"autotrace\"というフォルダを作成して、\"input.mp4\" という動画ファイルをアップロードしてください。\n",
        "\n",
        "ミソジサラリーマン様\\([@keriwaza](https://twitter.com/keriwaza)\\) より、トレース用素材動画を提供していただきました。ご自由にDLしてお使いください。\n",
        "\n",
        "[足滑りシーン動画(Googleドライブ)](https://drive.google.com/open?id=1kJrq3H8B_LrJDNfR4VA4BhfyrDnjBWvJ)\n",
        "\n",
        "※動画を公開する場合には、クレジットに「`モーション：ミソジサラリーマン様(@keriwaza)`」を追記してください。\n",
        "\n",
        "\n",
        "![アップロード](https://drive.google.com/uc?export=view&id=1gq-m_MUqmLe-I8VywuqWKaSFxMHejiqO)\n",
        "\n",
        "2．下のセルを実行すると、新しいウィンドウが表示され、Colabと連携するアカウントが確認されます。\n",
        "\n",
        "![Googleドライブ認証](https://drive.google.com/uc?export=view&id=1rBPzcRuL74QbMz5iOweAst0hNaG0iCkD)\n",
        "\n",
        "4．アカウントを選ぶと、確認画面が出ますので、アカウントを確認して、「次へ」を選択してください。\n",
        "\n",
        "![代替テキスト](https://drive.google.com/uc?export=view&id=1AWxAs9PxSbhULfjUDd12amXXhfkimr3h)\n",
        "\n",
        "4．アカウントを選ぶと、リクエストの許可確認画面が出ますので、アカウントを確認して、「すべて許可」を選択して「続行」を選んでください。\n",
        "\n",
        "※2回目以降は権限のチェックボックスは表示されないので、そのまま「続行」を選んでください\n",
        "\n",
        "※許可範囲を狭めてしまうとトレース結果が保存できませんでした…すみません\n",
        "\n",
        "![代替テキスト](https://drive.google.com/uc?export=view&id=1khBqeE8DC4bljWvKd9LTZIOPy_zsq_EH)\n",
        "\n",
        "7．認証には少し時間がかかります。\n",
        "\n",
        "8．下記のように、フォルダの中身とファイルサイズが取得できていれば成功です。\n",
        "\n",
        "![連携結果](https://drive.google.com/uc?export=view&id=1dZu9kkHMBlDovnS4ZHF5lLslVtqddaqt)\n",
        "\n",
        "それでは、下のセルを実行してみてください。"
      ]
    },
    {
      "metadata": {
        "id": "z6Qdxi5CGQD3"
      },
      "cell_type": "code",
      "source": [
        "from google.colab import drive\n",
        "import os\n",
        "\n",
        "# Googleドライブマウント\n",
        "drive.mount('/gdrive')\n",
        "\n",
        "# 起点ディレクトリ\n",
        "base_path = \"/gdrive/My Drive/autotrace\"\n",
        "\n",
        "! echo \"autotraceフォルダの中身 -----------\"\n",
        "! ls \"$base_path\"\n",
        "! echo \"--------------------\"\n",
        "\n",
        "# 入力動画ファイル\n",
        "input_video = base_path + \"/input.mp4\"\n",
        "\n",
        "print(\"ファイル名: \", os.path.basename(input_video))\n",
        "print(\"ファイルサイズ: \", os.path.getsize(input_video))\n"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "metadata": {
        "id": "fndC3AcISU02"
      },
      "cell_type": "markdown",
      "source": [
        "## Googleドライブとの連携（出力）"
      ]
    },
    {
      "metadata": {
        "id": "3_gAjNdVSZJG"
      },
      "cell_type": "markdown",
      "source": [
        "1．読み込みに成功したら、次は出力してみましょう。\n",
        "\n",
        "2．下のセルを実行してみてください。"
      ]
    },
    {
      "metadata": {
        "id": "TMcUl9vmShcq"
      },
      "cell_type": "code",
      "source": [
        "from google.colab import drive\n",
        "import os\n",
        "\n",
        "# Googleドライブマウント\n",
        "drive.mount('/gdrive')\n",
        "\n",
        "# 起点ディレクトリ\n",
        "base_path = \"/gdrive/My Drive/autotrace\"\n",
        "\n",
        "with open(base_path +'/output.txt', 'w') as f:\n",
        "  f.write('Google Drive 出力成功')\n",
        "\n",
        "! echo \"autotraceフォルダの中身 -----------\"\n",
        "! ls -l \"$base_path\"\n",
        "! echo \"--------------------\"\n",
        "\n",
        "! cat \"$base_path/output.txt\"\n"
      ],
      "execution_count": null,
      "outputs": []
    },
    {
      "metadata": {
        "id": "s4TyEe9BTXkM"
      },
      "cell_type": "markdown",
      "source": [
        "3．下の画像のように出力されていれば成功です。\n",
        "\n",
        "![dirve output](https://drive.google.com/uc?export=view&id=1dNEPMLJ20wzP7I7xczSL0Otmu5PHqBWL)\n",
        "\n",
        "4．Googleドライブの \"autotrace\"フォルダを確認すると、\"output.txt\"ファイルが出来ているはずです。\n",
        "\n",
        "![Googleドライブ](https://drive.google.com/uc?export=view&id=1UZ9WxOK8v2j2CTuDFnKknXrtnNv4gWN8)"
      ]
    },
    {
      "metadata": {
        "id": "GEzYaF9ndNm_"
      },
      "cell_type": "markdown",
      "source": [
        "**注意点**\n",
        "\n",
        "Googleドライブに保存したデータは「削除」を実行しても、ゴミ箱に移動するだけです。\n",
        "\n",
        "このままでは、容量は減らないので、容量を減らすためには、「ゴミ場を空にする」を実行して下さい。"
      ]
    },
    {
      "metadata": {
        "id": "0r2HYz1wZLWy"
      },
      "cell_type": "markdown",
      "source": [
        "## ランタイムの変更"
      ]
    },
    {
      "metadata": {
        "id": "FBlMHF4FZP80"
      },
      "cell_type": "markdown",
      "source": [
        "MMD自動トレースでは、GPUを使って処理を行います。\n",
        "\n",
        "そのため、colabのランタイムをGPUに変更します。\n",
        "\n",
        "1．ヘッダの \"ランタイム\"　＞　\"ランタイムのタイプを変更\"　をクリックする\n",
        "\n",
        "![ランタイムの変更](https://drive.google.com/uc?export=view&id=1zTahIzv9HeRnpdZb9YAun7G1dtnI6cGW)\n",
        "\n",
        "2．\"T4 GPU\"を選択して、\"保存\"をクリックする\n",
        "\n",
        "※ランタイムのリセットを行ってよいかのダイアログが出た場合、リセットしてください。\n",
        "\n",
        "![GPU](https://drive.google.com/uc?export=view&id=1vKNBsM0DzZwLuZfLiV_nnZz2eepRb3I3)\n",
        "\n",
        "3．切り替えに少し時間がかかります。\n",
        "\n",
        "4．ヘッダの右側のディスク容量欄のところにGPUと表記されていたら、切り替え完了です。\n",
        "\n",
        "![状態](https://drive.google.com/uc?export=view&id=1Y48HQDfMzQCa9ZhfTxcvNmc1toSI_OZm)\n"
      ]
    },
    {
      "metadata": {
        "id": "eocqSH2z9Y6o"
      },
      "cell_type": "markdown",
      "source": [
        "# エラーが起きた場合"
      ]
    },
    {
      "metadata": {
        "id": "15IIIYPX9eGx"
      },
      "cell_type": "markdown",
      "source": [
        "エラーが起きた、ファイルが生成されない、など、colabを実行して困ったことがありましたら、以下の手順で報告してください。\n",
        "\n",
        "\n",
        "1～4は、実行編(AutoTrace.ipynb)の場合のみ行ってください。\n",
        "\n",
        "---\n",
        "\n",
        "【実行編(AutoTrace.ipynb)の場合のみ】ここから ------\n",
        "\n",
        "1．画面左上の「＞」をクリックして下さい。目次が開きます。\n",
        "\n",
        "![目次](https://drive.google.com/uc?export=view&id=1x8AdFNmsIQPrtYptBf_NXPRNBJF8ON8z)\n",
        "\n",
        "2．「エラーが起きた場合」の目次を選択してください。\n",
        "\n",
        "![エラー目次](https://drive.google.com/uc?export=view&id=1e8JRC19J1kR691QO1vvx4WrPf_I-b0DY)\n",
        "\n",
        "3.　セルをひとつずつ実行して、自分で解決できないか、ご確認ください。\n",
        "\n",
        "4．それでも解決できなかった場合、以降の作業を実施してください。\n",
        "\n",
        "【実行編(AutoTrace.ipynb)の場合のみ】ここまで ------\n",
        "\n",
        "---\n",
        "\n",
        "5．ヘッダ　＞　\"ドライブにコピー\"\n",
        "\n",
        "![ドライブにコピー](https://drive.google.com/uc?export=view&id=19hhscZPZgw_4rqh4wF1tq6cJcXDl3p_M)\n",
        "\n",
        "6．Googleドライブの　\"マイドライブ　＞　Colab Notebooks\" に、「○○.ipynbのコピー」が作成されます\n",
        "\n",
        "![Googleドライブ](https://drive.google.com/uc?export=view&id=1NTSW9oqdIhi_OaH7Fo0Kcm8WmpZSvMQE)\n",
        "\n",
        "7．コピーされたファイルを右クリックして、「共有」を選択して下さい。\n",
        "\n",
        "![共有](https://drive.google.com/uc?export=view&id=1QsPD1b4CYwiV5GhCuMXIuZpGYoH1f9Q5)\n",
        "\n",
        "8．以下を入力した後、「送信」ボタンをクリックして下さい。\n",
        " - ユーザー：garnet200521358@gmail.com\n",
        " - 権限：閲覧者\n",
        " - メモ：どのような操作を行ったか\n",
        "\n",
        "※メモを添付されないで送信された場合、お返事はできかねます。すみません。\n",
        "\n",
        "![共有設定](https://drive.google.com/uc?export=view&id=1CRJ43DI2tSS8U3Sj_dqCeOkkH4lX-8PD)\n",
        "\n",
        "9．送信されると、私宛に共有メールが届きます。\n",
        "\n",
        "10．コピーファイルには、あなたが実行した処理の結果も一緒に保存されていますので、それを確認して、お返事いたします。\n",
        "\n",
        "11．共有せずにご相談されたい場合は、ニコニコミュニティよりご連絡下さい。\n",
        "\n",
        "https://com.nicovideo.jp/community/co5387214"
      ]
    },
    {
      "metadata": {
        "id": "EF4UQxGfbc1G"
      },
      "cell_type": "markdown",
      "source": [
        "# 注意事項"
      ]
    },
    {
      "metadata": {
        "id": "Um9JVs8RbfmT"
      },
      "cell_type": "markdown",
      "source": [
        " colabは使い捨ての環境です。\n",
        "\n",
        " 一度作成した環境は、12時間後には破棄されます。\n",
        "\n",
        " また、90分無操作の状態が続いても破棄されます。\n",
        "\n",
        " 実行編の「インストール完了確認」セクションのセルを実行した結果で、データがなくなっている（No such file or directory）場合、実行編の頭からやり直してください。\n",
        "\n",
        "Googleドライブとの連携も再設定が必要です。\n",
        "\n",
        "ただし、Googleドライブに保存したデータは消えません。"
      ]
    },
    {
      "metadata": {
        "id": "A0GTK-ACxFfB"
      },
      "cell_type": "markdown",
      "source": [
        "# 利用規約"
      ]
    },
    {
      "metadata": {
        "id": "krFuMErb1yKX"
      },
      "cell_type": "markdown",
      "source": [
        "MMD自動トレースの結果を公開・配布する場合は、必ず利用規約のご確認をお願い致します。Unityの場合も同様です。\n",
        "\n",
        "クレジットの記載ご協力をお願いいたします。\n",
        "\n",
        "[MMD自動トレース v4 利用規約](https://github.com/miu200521358/mmd-auto-trace-4/wiki/03.%E5%88%A9%E7%94%A8%E8%A6%8F%E7%B4%84)"
      ]
    },
    {
      "metadata": {
        "id": "GUkkCj5EUJw7"
      },
      "cell_type": "markdown",
      "source": [
        "導入編は以上となります。お疲れ様でした。\n",
        "\n",
        "それでは、素敵なMMDライフをお楽しみ下さい！"
      ]
    }
  ]
}